Video encoding is a process by which raw video data captured by a digital camera is encoded and compressed into a smaller size. The encoded data, which can also be referred to as an encoded bitstream, can be more easily stored and/or transmitted than the raw video data. A decoding process can approximately reconstruct the raw video data from the encoded bitstream. Examples of codecs for encoding and decoding video data include Advanced Video Coding (AVC, also referred to as H.264), High Efficiency Video Coding (HEVC, also referred to as H.265), Versatile Video Coding (VVC, also referred to as Future Video Coding (FVC) and H.266), and various standards defined by the Motion Pictures Experts Group (MPEG), among other examples.
Video encoding and decoding are computationally intensive processes, thus in time-critical applications dedicated coding hardware can be used. For example, a video accelerator can be implemented using an integrated circuit device. By being purpose-built to perform only video encoding and/or decoding, the video accelerator can perform these operations much faster than would a general purpose processor running an encoding or decoding program.
Video encoding and decoding can also be resource intensive, in terms of memory needed to store encoded data, unencoded data, and any intermediate data generated during the coding process. A video accelerator may be taxed by resource needs such as these, and may need to accommodate available resources in view of time criticality.